home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / hdsource.zip / HDFSEC.ASM < prev    next >
Assembly Source File  |  1986-02-24  |  13KB  |  355 lines

  1.      PAGE     64,132            ;PAGE WIDTH,LENGTH
  2.      .SALL
  3.      TITLE     PC/AT DIAGNOSTIC - FLAG SPECIFIC SECORS
  4. ; **********************************************************************
  5. ; *                                       *
  6. ; *    MODULE NAME    HDFSEC                           *
  7. ; *    AUTHOR           JIM BRACKING                       *
  8. ; *                                       *
  9. ; *    DECSRIPTION    THIS PROGRAM PERFORMS THE FOLLOWING           *
  10. ; *               FUNCTIONS:                       *
  11. ; *                                       *
  12. ; *               1. FLAGS MANUFACTURING DEFECTS               *
  13. ; *                                       *
  14. ; **********************************************************************
  15. ;
  16. ; **********************************************************************
  17. ; *            EXTERNAL PROGRAM REFERENCES               *
  18. ; **********************************************************************
  19.      EXTRN     SCRMGR:NEAR,HDRW:NEAR,HDHS:NEAR
  20.      EXTRN     HDSEEK:NEAR,HDECC:NEAR
  21. ; **********************************************************************
  22. ; *              EXTERNAL DATA REFERENCES               *
  23. ; **********************************************************************
  24.      INCLUDE HDDATA.ASM
  25. ; **********************************************************************
  26. ; *            EXTERNAL SUBROUTINE REFERENCES               *
  27. ; **********************************************************************
  28.      INCLUDE HDSUB.ASM
  29.      EXTRN     LOGERR:NEAR
  30. ; **********************************************************************
  31. ; *                PUBLIC DECLARES                   *
  32. ; **********************************************************************
  33.      PUBLIC  HDFSEC
  34. ; **********************************************************************
  35. ; *                 MACROS                    *
  36. ; **********************************************************************
  37.      IF1
  38.      INCLUDE HD.MAC
  39.      INCLUDE \SCRMGR\SCRNWORK.MAC
  40.      ENDIF
  41. ; **********************************************************************
  42. ; *                                       *
  43. ; *                   BEGIN                       *
  44. ; *                                       *
  45. ; **********************************************************************
  46. CSEG     SEGMENT PARA PUBLIC 'CODE'
  47.      ASSUME CS:CSEG
  48. HDFSEC PROC    NEAR
  49.      ASSUME  DS:CSEG           ;DATA SEGMENT
  50.      JMP     BY_ID               ;JMP AROUND ID
  51.      ID     HDFSEC
  52.      INCLUDE \SCRMGR\SCRNWORK.ASM
  53. ; **********************************************************************
  54. ; *             EQUATES AND STRUCTURES                *
  55. ; **********************************************************************
  56.      INCLUDE HDEQU.ASM
  57. ; **********************************************************************
  58. ; *                 SCREENS                   *
  59. ; **********************************************************************
  60.   SFIELD X00,X01,,@LABEL,RV,23,02,'CTRL-F1 TO START'
  61.   SFIELD X01,X02,,@LABEL,RV,23,29,'ESC FOR THE MAIN MENU'
  62.   SFIELD X02,X00,,@LABEL,RV,23,62,'CTRL-BRK TO STOP'
  63. ;
  64.   SFIELD XI0,XI1,,@LABEL,LO,19,05,'DRIVE =>'
  65.   SFIELD XI1,XI2,1,@EX+@NUM+@UC+@NFULL+@REQ,LO,19,14
  66.   SFIELD XI2,XI3,,@LABEL,LO,20,05,'(1 OR 2)'
  67.   SFIELD XI3,XI4,,@LABEL,LO,19,20,'CYLINDER =>'
  68.   SFIELD XI4,XI5,4,@EX+@NUM+@NFULL+@REQ,LO,19,32
  69.   SFIELD XI5,XI6,,@LABEL,LO,20,20,'HEAD =>'
  70.   SFIELD XI6,XI9,2,@EX+@NUM+@NFULL+@REQ,LO,20,28
  71.   SFIELD XI9,XIA,,@LABEL,LO,19,46,'INTERLEAVE =>'
  72.   SFIELD XIA,XIB,1,@EX+@NUM+@NFULL+@REQ,LO,19,60
  73.   SFIELD XIB,XI0,,@LABEL,LO,20,50,'(1-8)'
  74. ;
  75.   SFIELD XS0,XS1,,@LABEL,LO,21,46,'STATUS =>'
  76.   SFIELD XS1,XS0,,@LABEL,LO,21,56,'** IDLE **   '
  77. ;
  78.   SFIELD XS2,XS3,,@LABEL,LO,21,46,'STATUS =>'
  79.   SFIELD XS3,XS2,,@LABEL,HI,21,56,'** WORKING **'
  80.   SFIELD T05,T05,,@LABEL,RV,17,33,'FLAG DEFECTS'
  81. ;
  82.   SFIELD E01,E02,,@LABEL,LO,16,02,'  CYL XXXX HEAD XX HAS BEEN FLAGGED'
  83.   SFIELD E02,E03,04,@LABEL,LO,16,08
  84.   SFIELD E03,E01,02,@LABEL,LO,16,18
  85. BY_ID:
  86. HDFSEC ENDP
  87. ; *********************************************************************
  88. ; *                                      *
  89. ; *              FLAG MANUFACTORINT DEFECTS              *
  90. ; *                                      *
  91. ; *********************************************************************
  92. FSEC     PROC
  93.      CLS     LO,4,1,23,78           ;CLEAR THE SCREEN
  94.      BOX     17,0,08,80,LO           ;OUTLINE
  95.      WRITEC  0CCH,LO,17,0,1        ;  THE
  96.      WRITEC  0B9H,LO,17,79,1       ;  SCREEN
  97.      WRITE     T05               ;TYPE OF TEST
  98.      WRITE     X00               ;COMMANDS
  99. FS_00:
  100.      LEA     BX,XIA            ;INTERLEAVE ENTRY
  101.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  102.      MOV     [BX].S_DATA,'3'       ;DEFAULT INTERLEAVE OF 3 (AT)
  103.      CMP     PCT,00H           ;IBM/AT??
  104.      JE     FS_01               ;YES
  105.      MOV     [BX].S_DATA,'6'       ;DEFAULT INTERLEAVE OF 6 (PC)
  106. FS_01:
  107.      WRITE     XS0               ;STATUS
  108.      LEA     BX,XI1            ;DRIVE ENTRY
  109.      CALL     CLR_FLD           ;CLEAR THE ENTRY
  110.      LEA     BX,XI4            ;CYLINDER
  111.      CALL     CLR_FLD           ;CLEAR THE ENTRY
  112.      LEA     BX,XI6            ;HEAD
  113.      CALL     CLR_FLD           ;CLEAR THE ENTRY
  114.      WRITE     XI0               ;MSG
  115. FS_02:
  116.      READR     BX               ;FETCH ANSWERS
  117.      CALL     TRANS_KEY           ;TRANSLATE THE KEY
  118.      JNC     FS_04               ;SUCESSFULL
  119. FS_03:
  120.      CALL     BEEP               ;RING THE BELL
  121.      JMP     FS_02               ;TRY AGAIN
  122. FS_04:
  123.      CMP     AL,ESC_KEY           ;ESCAPE KEY??
  124.      JNE     FS_05               ;NO
  125.      JMP     EXIT               ;RETURN
  126. FS_05:
  127.      CMP     AL,C_BRK           ;CONTROL BREAK KEY??
  128.      JNE     FS_07               ;NO
  129.      JMP     FSEC               ;YES - START OVER
  130. FS_07:
  131.      CMP     AL,C_F1           ;CTRL_F1??
  132.      JNE     FS_03               ;NO - INVALID KEY
  133.      LEA     BX,XI1            ;DRIVE ENTRY
  134.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  135.      MOV     AL,[BX].S_DATA        ;FETCH DRIVE NUMBER
  136.      CMP     AL,'1'                ;VALID DRIVE??
  137.      JE     FS_08               ;YES
  138.      CMP     AL,'2'                ;VALID DRIVE??
  139.      JE     FS_08               ;YES
  140.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  141.      PMSG     22               ;DISPLAY THE MESSAGE
  142.      CALL     BEEP               ;RING THE BELL
  143.      WRITE     XI0               ;DRIVE + INTERLEAVE
  144.      JMP     FS_02               ;TRY AGAIN
  145. FS_08:
  146.      AND     AL,0FH            ;ADJUST
  147.      DEC     AL               ;  DRIVE NUMBER
  148.      CMP     AL,NUM_DR           ;DRIVE INSTALLED
  149.      JB     FS_10               ;YES
  150.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  151.      PMSG     21               ;DISPLAY THE MESSAGE
  152.      CALL     BEEP               ;RING THE BELL
  153.      WRITE     XI0               ;DRIVE
  154.      JMP     FS_02               ;TRY AGAIN
  155. FS_10:
  156.      MOV     DR,AL               ;SAVE DRIVE NUMBER
  157.      LEA     BX,XI1            ;DRIVE ENTRY
  158.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  159.      WRITE     XI0               ;DRIVE
  160.      CALL     READ_PARMS           ;FETCH DRIVE PARMS
  161. ;
  162.      LEA     BX,XI4            ;CONVERT CYLINDER
  163.      CALL     CVT_HEX           ;  TO HEX IN AX
  164.      JNC     FS_20               ;SUCESSFULL
  165. FS_15:
  166.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  167.      PMSG     39               ;DISPLAY THE MESSAGE
  168.      CALL     BEEP               ;RING THE BELL
  169.      WRITE     XI0               ;DRIVE
  170.      LEA     BX,XI4            ;CYLINDER
  171.      JMP     FS_02               ;TRY AGAIN
  172. FS_20:
  173.      CMP     AX,MAX_CYL           ;IN RANGE??
  174.      JA     FS_15               ;NO
  175.      MOV     CUR_CYL,AX           ;SAVE CYLINDER
  176.      LEA     BX,XI6            ;CONVERT HEAD
  177.      CALL     CVT_HEX           ;  TO HEX IN AL
  178.      JNC     FS_30               ;SUCESSFULL
  179. FS_25:
  180.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  181.      PMSG     40               ;DISPLAY THE MESSAGE
  182.      CALL     BEEP               ;RING THE BELL
  183.      WRITE     XI0               ;DRIVE
  184.      LEA     BX,XI6            ;HEAD
  185.      JMP     FS_02               ;TRY AGAIN
  186. FS_30:
  187.      CMP     AL,MAX_HD           ;IN RANGE??
  188.      JA     FS_25               ;NO
  189.      MOV     CUR_HD,AL           ;SAVE HEAD
  190.      MOV     AL,CUR_HD           ;CONVERT HEAD
  191.      LEA     BX,XI6            ; TO
  192.      CALL     CONV_ASCII           ;   ASCII
  193.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  194.      MOV     AX,CUR_CYL           ;CONVERT CYLINDER
  195.      LEA     BX,XI4            ; TO
  196.      CALL     CONV_ASCII           ;   ASCII
  197.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  198. ; *********************************************************************
  199. ; *               PROCESS INTERLEAVE                  *
  200. ; *********************************************************************
  201.      LEA     BX,XIA            ;INTERLEAVE ENTRY
  202.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  203.      MOV     AL,[BX].S_DATA        ;FETCH INTERLEAVE
  204.      CMP     AL,'1'                ;IN RANGE??
  205.      JB     FS_45               ;NO
  206.      CMP     AL,'8'                ;IN RANGE??
  207.      JA     FS_45               ;NO
  208.      JMP     FS_50               ;CONTINUE
  209. FS_45:
  210.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  211.      PMSG     23               ;DISPLAY THE MESSAGE
  212.      CALL     BEEP               ;RING THE BELL
  213.      WRITE     XI9               ;INTERLEAVE
  214.      JMP     FS_02               ;TRY AGAIN
  215. FS_50:
  216.      XOR     AH,AH               ;CLEAR AH
  217.      AND     AL,0FH            ;MAKE IT A DIGIT
  218.      DEC     AL               ;RELEATIVE TO ZERO
  219.      XOR